/**
 * 语言切换 需要将全部语言提前添加  后续才可以切换
 * 这里采用 切换哪个 添加哪个
 * 1 语言数组 做选择
 * 2 添加对应语言
 * 3 同步修改 pinia
 *
 * export const i18n = createI18n(options)
 * i18n.global === useI18n()===$i18n = 18
 * 18.availableLocales  多有语言包 名 数组
 * 18.t 全局使用语言函数
 * 18.setLocaleMessage(lang, message)  添加语种
 * 18.locale.value  设置显示语种
 *
 */

// import { unref } from 'vue'
import { useLocale } from '@/stores/modules/localeStore'
import { i18n } from './setupI18n'

export const useChangeLocale = async lang => {
	// 全局对象 切换
	const globalI18n = i18n.global
	// const currentLocale = unref(globalI18n.locale)
	// 要切换的语言 和 现在的相同
	/* 	if (currentLocale === lang) {
		return
	} */

	// 获取语言环境
	const localeStore = useLocale()
	const { localeArray, changeLocale } = localeStore

	const defaultLocale = await import(`./lang/${lang}.js`)
	const message = defaultLocale.default?.message ?? {}
	if (!message) return

	// 添加对应语言
	globalI18n.setLocaleMessage(lang, message)
	// 切换语种
	globalI18n.locale.value = lang
	// 语言池 中 包含 要修改的语言 就更新 pinia
	// 就更新 pinia -- locale
	if (localeArray.includes(lang)) {
		setI18nLanguage(lang, changeLocale)
	}
}
// store 更新 本地语言
const setI18nLanguage = (lang, changeLocale) => changeLocale(lang)

// 导出 a-config-provider 组件所需的 locale -- antdLocale
export const antdLocale = async lang => {
	const defaultLocale = await import(`./lang/${lang}.js`)
	const locale = defaultLocale.default?.antdLocale ?? {}
	return locale
}
